package com.zjsru.plan2023.other;

/**
 * @Author: cookLee
 * @Date: 2023-09-24
 * 将钱分给最多的儿童
 */
public class DistMoney {

    /**
     * 所有的钱都必须被分配。
     * 每个儿童至少获得 1 美元。
     * 没有人获得 4 美元。
     * \
     * 输入：money = 20, children = 3
     * 输出：1
     * 解释：
     * 最多获得 8 美元的儿童数为 1 。一种分配方案为：
     * - 给第一个儿童分配 8 美元。
     * - 给第二个儿童分配 9 美元。
     * - 给第三个儿童分配 3 美元。
     * 没有分配方案能让获得 8 美元的儿童数超过 1 。
     * \
     * 输入：money = 16, children = 2
     * 输出：2
     * 解释：每个儿童都可以获得 8 美元。
     * @param args
     */
    public static void main(String[] args) {
        DistMoney distMoney = new DistMoney();
        int money = 18;
        int children = 2;
        System.out.println(distMoney.distMoney(money, children));
    }

    /**
     * 贪心
     * @param money
     * @param children
     * @return int
     */
    public int distMoney(int money, int children) {
        //钱不够分
        if (money < children) {
            return -1;
        }
        int count = 0;
        //每个人先给一块钱
        money -= children;
        count = Math.min(money / 7, children);
        money -= count * 7;
        children -= count;
        //1.分完后还有多余的钱 都归到一个人身上
        //2.杜绝出现分到4块的情况
        if ((children == 0 && money > 0) || (children == 1 && money == 3)) {
            count--;
        }
        return count;
    }

}
